<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
	</head>
	<body>
		<script>
			// 严格模式
			// 'use strict'下面的js代码就会按照严格模式执行
			// 放在函数内部，为某个函数开启严格模式			
			//'use strict';
			// 1.变量名必须先声明再使用
			// num = 10;
			// console.log(num);//报错
			// 2.不能随意删除已经声明好的变量	
			// delete num;//报错
			function fn() {
				// 3.严格模式下全局作用域函数中的this是undefined		
				console.log(this); //undefined
			}
			fn();

			function Star() {
				this.name = 'Andy'
			}
			// 4.严格模式下,如果构造函数不加new调用,this会报错	
			//Star();
			var star1 = new Star();
			// 5.new实例化的构造函数指向创建的实例对象
			console.log(star1.name); //Andy
			// 6.定时器this还是指向window	
			setTimeout(() => console.log(this)); //window
			// 7.严格模式下函数里面的参数不允许有重名 
			function f1(a, a) {
				//a = 1; a = 6;
				console.log(a + a); //4
			}
			f1(1, 3);
			// 8.不允许在非函数内部声明函数
		</script>
	</body>
</html>
